Dynamic linking of codesets in universal remote control devices

ABSTRACT

A codeset having function-code combinations is provisioned on a controlling device to control functions of an intended target device. Input is provided to the controlling device which designates a function to be controlled on the intended target device. From a plurality of codes that are each associated with the designated function in a database stored in a memory of the controlling device a first code that is determined to be valid for use in controlling the designated function on the intended target device is selected. When the codeset is then provisioned on the controlling device, the provisioned codeset includes as a function-code combination thereof the designated function and the first code.

RELATED APPLICATION INFORMATION

This application is a continuation of and claims the benefit of U.S.application Ser. No. 15/426,297, filed on Feb. 7, 2017, whichapplication claims the benefit of and is a continuation of U.S.application Ser. No. 13/005,017, filed on Jan. 12, 2011, whichapplication claims the benefit of and is a continuation of U.S.application Ser. No. 11/655,419, filed on Jan. 19, 2007, the disclosuresof which are each incorporated herein by reference in their entirety.

TECHNICAL FIELD

The disclosed embodiments relate to dynamic linking of multiple codesetsfor generating operational signals, such as those transmitted from auniversal remote control device.

BACKGROUND

A universal remote control device transmits operational signals tocontrol one or more electronic consumer devices such as TVs, VCRs, cableset-top boxes, and CD/DVD players. Each operational signal communicatesa keycode associated with a selected electronic consumer device. Eachkeycode corresponds to a function of the selected electronic consumerdevice, such as power on, power off, volume up, volume down, play, stop,select, channel up, channel down, etc. A particular brand and make ofelectronic consumer device responds to operational signals containing aparticular set of keycodes and performs the corresponding functions.

In order to provide the functionality of a universal remote controldevice, various types of keycodes are stored in codesets as a codesetdatabase format. Each codeset is identified by a three digit device codeassociated with a particular brand and make of an electronic consumerdevice.

There are more than ten thousand codesets used in the market. Because ofthe large number of different electronic consumer devices, the amount ofmemory space required to store the entire codeset database is large.Various compression schemes are used to store the codeset database withreduced memory. Typically, a universal remote control device stores lessthan one thousand codesets due to limited memory space.

After a universal remote control device has been manufactured, it islikely that the remote control does not have a particular codeset thatcontains all the keycodes corresponding to all functions of a particularbrand and make of a consumer electronic device. For instance, the remotecontrol device is able to control the power, volume, and channel of atelevision when it is programmed to use codeset #1. However, the remotecontrol device cannot control the picture-in-picture function of the TVwhen it is programmed to use codeset #1. On the other hand, the remotecontrol device is able to control the picture-in-picture function of theTV when it is programmed to use codeset #2. However, when the remotecontrol device is programmed to use codeset #2, it cannot control thepower, volume, and channel of the TV.

Some remote control devices provide additional programmable keys on theremote control device to allow the user to define his/her own desiredkeycodes. However, the number of programmable keys available on a remotecontrol device is limited. The programmable keys are therefore usuallyused for advanced functions. Some other remote control devices provide a“key mover” feature which allows a user to reassign a functionassociated with one key to another key. The “key mover” featureincreases flexibility, but it does not solve the problem that aparticular codeset does not contain all keycodes corresponding to allfunctions of a selected electronic consumer device.

Sometimes it is also desirable for a user to be able to control multipleelectronic consumer devices without having to reprogram the universalremote control device.

For instance, a user may want to be able to control the power ofmultiple devices types. The “punch through” feature works for apredefined set of keys, typically, the TV channel and volume up/downkeys. Another feature known as “double-press” is available on someremote control devices. The “double-press” feature of the power key is,however, hard to use and inflexible, because the user either has to turnon the power of all the devices or has to turn off the power of all thedevices by double-pressing the power key quickly.

A solution is desired.

SUMMARY

A universal remote control device stores various codesets to controlvarious types of electronic consumer devices. A user programs theuniversal remote control device to use a selected codeset to control aselected electronic consumer device. Typically, a universal remotecontrol device stores a few hundred codesets (less than one thousandcodesets) due to limited memory space. Therefore, it is likely that auniversal remote control device does not have a particular codeset thatcontains all the keycodes corresponding to all functions of a particularbrand and make of electronic consumer device. Moreover, it is likelythat a universal remote control device is not able to control differenttypes of electronic consumer devices without being programmed withdifferent codesets.

In one example, a user programs a universal remote control device to usecodeset #1 that contains a set of keycodes to control a particular brandand make of electronic consumer device. The selected electronic consumerdevice responds to operational signals communicating the keycodes andperforms the corresponding functions. However, the selected electronicconsumer device does not respond and perform a desired function when theuser presses KEY X on the remote control device.

In one embodiment, the user presses a predefined sequence of keys on theremote control device to search (sometimes called “auto scan”) for thekeycode associated with KEY X for the selected electronic consumerdevice. Suppose that the keycode is found in codeset #2. The user thenpresses KEY X in combination with another predefined key on the remotecontrol device to “dynamically link” the keycode in codeset #2 tocodeset #1. A keycode link routine executing on a processor inside theremote control device generates keycode link information and stores thekeycode link information in a volatile memory space. The keycode linkinformation includes a codeset identifier of codeset #2 and a keyidentifier of KEY X associated with the keycode. Thereafter, when theuser presses KEY X, the remote control device uses the keycode linkinformation to access codeset #2 and then generates an operationalsignal communicating the keycode associated with KEY X. The selectedelectronic consumer device responds to the operational signal andperforms the desired function.

In another example, a user programs a universal remote control device touse codeset #1. Codeset #1 contains a set of keycodes to control a firstelectronic consumer device. However, the user also wishes to control asecond electronic consumer device that performs a desired functionwithout reprogramming the universal remote control device with adifferent codeset. Suppose that KEY Y corresponds to the desiredfunction.

In one embodiment, the user presses a predefined sequence of keys on theremote control device to search for (“auto scan” for) the keycode thatcorresponds to the desired function of the second electronic consumerdevice. Suppose that the keycode is found in codeset #2. The user thenpresses KEY Z in combination with another predefined key on the remotecontrol device to “dynamically link” the keycode in codeset #2 tocodeset #1. A keycode link routine executing on a processor inside theremote control device generates keycode link information and stores thekeycode link information in a volatile memory space. In this example,KEY Y is used to control the first electronic consumer device for thedesired function. The user links both KEY Z and the keycode associatedwith KEY Y in codeset #2 to codeset #1 such that KEY Z can be used tocontrol the second electronic consumer device for the same function.Therefore, the keycode link information includes a codeset identifier ofcodeset #2, a key identifier of KEY Y, and a key identifier of KEY Z.Thereafter, when the user presses KEY Z, the remote control device usesthe keycode link information to access codeset #2 and then generates anoperational signal communicating the keycode associated with KEY Y. Thesecond electronic consumer device responds to the operational signal andperforms the desired function.

Other embodiments and advantages are described in the detaileddescription below. This summary does not purport to define theinvention. The invention is defined by the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, where like numerals indicate like components,illustrate embodiments of the invention.

FIG. 1 illustrates a system in accordance with one novel aspect.

FIG. 2 is a simplified diagram of a circuit within a universal remotecontrol device.

FIG. 3 is a detailed diagram of a device index table, a codeset indextable, a protocol table, a key index table, and two codesets of FIG. 2.

FIG. 4 illustrates an example of dynamic linking of two codesets inaccordance with one novel aspect.

FIG. 5 is a flow chart of a method of dynamic linking of two codesets.

FIG. 6 is a flow chart of a method of using keycode link information toaccess dynamically linked codesets.

FIG. 7 illustrates another example of dynamically linked codesetsinvolved in the methods of FIGS. 5 and 6.

DETAILED DESCRIPTION

Reference will now be made in detail to some embodiments of theinvention, examples of which are illustrated in the accompanyingdrawings.

FIG. 1 is a diagram of a system 1 in accordance with, one novel aspect.System 1 includes a remote control device 2, a first electronic consumerdevice 3, and a second electronic consumer device 4. A user uses remotecontrol device 2 to control a selected electronic consumer device.Although an ordinary handheld infrared remote control device isdepicted, the remote control device can take other forms and may, forexample, be a personal digital assistant (PDA), or personal computer orany other suitable device. In the example of FIG. 1, the user may presskey 5 on remote control device 2 to turn on/off the power of the firstelectronic consumer device 3, a television. When the user presses key 5,remote control device 2 emits an operational signal 6 from a LED (lightemitting diode) 7. Operational signal 6 is transmitted to an infraredreceiver 8 of TV 3. Infrared receiver 8 interprets operational signal 6and takes appropriate action, which in this case is to turn on the TV ifit is off, or to turn off the TV if it is on.

Remote control device 2 of FIG. 1 is a universal remote control device.The user programs remote control device 2 to send out operationalsignals to control several types of electronic consumer devices, such asTVs, VCRs, cable set-top boxes, and CD/DVD players. For example, toprogram remote control device 2 to control a particular brand and makeof TV 3, the user first presses device key 9 for device type “TV”, andthen inputs a three digit device code. Thereafter, when the user presseskey 5, operational signal 6 is transmitted to control TV 3. Similarly,to program remote control device 2 to control a particular brand andmake of cable set-top box 4, the user first presses the device key 10for device type “cable”, and then inputs a three digit device code.Thereafter, when the user presses key 5, operational signal 11 istransmitted to control cable set-top box 4.

FIG. 2 is a simplified diagram of a circuit within remote control device2 of FIG. 1. The circuit of FIG. 2 includes a set of keys 12, amicrocontroller integrated circuit 13, and an infrared LED 14.Microcontroller 13 includes a processor 15, a read-only memory (ROM) 16,and a random-access memory (RAM) 17. ROM 16 stores software program 18executable by processor 15 and a codeset database 19 (sometimes referredas a codeset library). Program 18 includes a keycode link routine 20.Codeset database 19 includes a key index table 21, a codeset index table22, a set of codesets 23, 24 (for instance, codeset TV000 and TV001 asillustrated), and a protocol table 25. RAM 17 stores a device indextable 26, and keycode link information 27. Microcontroller 13 performskey-scanning and determines the row and column coordinates of any keythat is pressed by the user.

FIG. 3 is a detailed diagram of device index table 26, codeset indextable 22, protocol table 25, keycode index table 21, and codeset 23 ofFIG. 2. When a user presses a key on remote control device 2 of FIG. 1,processor 15 of FIG. 2 accesses device index table 26 to obtain thethree digit device code that the user has programmed (for instance, 000for TV device type). Processor 15 then accesses codeset index table 22to obtain the byte 0 address of codeset 23 corresponding to the threedigit device code (for instance, codeset TV000 as illustrated).Processor 15 also accesses key index table 21 to obtain the offset valueof the flag bit (in the flag bytes of codeset 23) corresponding to thekey coordinates that the user has pressed. Using the offset value,processor 15 identifies the flag bit in codeset 23 and determineswhether the keycode of the pressed key is present in codeset 23. Thekeycode of the pressed key is present if the flag bit is of value 1. Thekeycode of the pressed key is not present if the flag bit is of value 0.If the keycode is found in codeset 23, then processor 15 uses thekeycode to generate an operational signal according to the timing andmodulation scheme information of protocol table 25 (sometimes the timingand modulation scheme information is included within the keycode).

FIG. 4 is a diagram of a device index table 26, a codeset index table22, two codesets 28, 29, keycode link information 27, and electronicconsumer device TV 3 that are involved in a method of dynamic linking oftwo codesets in accordance of one novel aspect. FIG. 5 is a flow chartof the dynamic linking method that links codesets 28 and 29. FIG. 6 is aflow chart of accessing the linked codesets 28 and 29 using keycodelinking information 27.

In the example of FIG. 4, remote control device 2 is programmed tocontrol a particular brand and make of TV 3 using codeset 28 (TV123).Codeset TV123 contains various keycodes (for instance, keycodes #1-#4are illustrated) corresponding to different keys on remote controldevice 2. Suppose that keycode #1 is associated with the volume up (VUP)key, keycode #2 is associated with the volume down (VDN) key, keycode #3is associated with the picture-in-picture (PIP) key and keycode #4 isassociated with the split-picture (SPLIT) key. When a user presses theVUP key on remote control device 2, processor 15 of FIG. 2 accessescodeset TV123 and determines whether the keycode of the pressed VUP keyis present in codeset TV123. In this particular example, the flag bytehas a value of 01100110, with flagbit #1 =0, flagbit #2 =1, flagbit #3=1, and so forth. Assume that the VUP key is indicated by flagbit #2according to the offset value of key index table 21 of FIG. 3. Becauseflagbit #2 has a digital value of 1, processor 15 determines thatkeycode #1 associated with the VUP key is present in codeset TV123 anduses keycode #1 to generate an operational signal to increase the volumeof TV 3. Similarly, when the user presses the PIP key, processor 15accesses codeset TV123 and determines whether the PIP key is present incodeset TV123. Assume that the PIP key is indicated by flagbit #6according to the offset value of key index table 21 of FIG. 3. Becauseflagbit #6 has a digital value of 1, processor 15 determines thatkeycode #3 associated with the PIP key is present in codeset TV123 anduses keycode #3 to generate an operational signal to display apicture-in-picture screen on TV 3.

In one situation, most of the functions of TV 3 are performed correctlyby pressing the corresponding keys on remote control device 2 that isprogrammed to use codeset TV123. For instance, TV 3's power is turnedon/off when the power key is pressed, its channel goes up/down when thechannel up/down key is pressed, and its volume goes up/down when thevolume up/down key is pressed. However, the picture-in-picture screen isnot displayed on TV 3 when the PIP key is pressed. Although codesetTV123 includes keycode #3 associated with the PIP key, the operationalsignal generated using keycode #3 in codeset TV123 does not perform thedesired picture-in-picture function for TV 3. In the example of FIG. 4,there is another codeset 29 (TV345) that is also stored in ROM 18 ofremote control device 2. Codeset TV345 contains various keycodesincluding keycode #3 associated with the PIP key. In another situation,most of the functions of TV 3 are not performed correctly by pressingthe corresponding keys on remote control device 2 that is programmed touse codeset TV345. However, the picture-in-picture screen is displayedon TV 3 when the PIP key is pressed. Therefore, if the user programsremote control device 2 to use codeset TV123, then most of the keys onremote control device 2 work properly except for the PIP key. On theother hand, if the user programs remote control device 2 to use codesetTV345, then the PIP key works properly except for most of the otherkeys.

FIG. 5 illustrates a method of dynamic linking of codeset TV123 andTV345 such that the PIP key also works properly for remote controldevice 2 that is programmed to use codeset TV123. In the example of FIG.5, remote control device 2 is programmed to use codeset TV123 to controlTV 3 and most of the keys work properly except for the PIP key. In thefirst step 30 of FIG. 5, the user presses and holds the TV device key,and then presses and releases the EXIT key to enter a search mode. Instep 31, the user presses and holds the EXIT key, and then presses andreleases the PIP key to start automatic searching for keycodesassociated with the PIP key. During the auto search (also called “autoscan”), the remote control device transmits operational signalscorresponding to keycodes associated with the PIP key starting fromcodeset TV000, TV001, TV002, and so forth. There is a 5 second gapbetween successive transmissions. When a picture-in-picture screenappears on TV 3, the user stops the auto search by pressing the EXIT key(step 32). An identifier of the codeset just transmitted (for instance,TV345) is saved in a temporary location. The user then decides either torestart or to stop the search by toggling the EXIT key. In order to linkthe keycode associated with the PIP key, the user presses and holds theMENU key, and then presses and releases the PIP key (step 33). The usercontinues this searching and linking operation by going back to step 31.Otherwise, in step 34, the user exits the search mode by pressing the TVdevice key and the EXIT key together.

When two codesets are dynamically linked in step 33 of FIG. 5, keycodelink routine 20 generates and stores keycode link information 27 in RAM17 of FIG. 2. In the example of FIG. 4, keycode link information 27includes the programmed codeset identifier #1 (for instance, TV123), thelinked codeset identifier #2 (for instance, TV345), and a keycode keyidentifier (for instance, value 21 as illustrated) of the linked PIPkey. A key identifier is a value that represents a key on a remotecontrol device. The key identifier is used to determine the coordinateof the pressed key in the key index table. In the example of FIG. 4,keycode link information 27 also includes a substitute flag byte, with anew value of 01100000 as compared to the original value of 01100110. Inthe substitute flag byte, flagbit #6 has a new digit value of 0indicating that the keycode associated with the PIP key in codeset TV123no longer exists (is no longer to be used).

FIG. 6 is a flow chart of a method of accessing the linked codesetsusing keycode link information 27 after codesets TV123 and TV345 havebeen dynamically linked. In one scenario, the user presses the VUP keyin step 35. In the next step 36, processor 15 determines whether theprogrammed codeset TV123 is dynamically linked by examining keycode linkinformation 27. In this example, codeset TV123 is linked because keycodelink information 27 contains codeset identifier #1, TV123. Processor 15then uses the substitute flag byte to access codeset TV123 in step 37.Because flagbit #2 has a digital value of 1 in the substitute flagbyte,processor 15 determines in step 38 that keycode #1 associated with theVUP key is present in codeset TV123. In step 39, processor 15 useskeycode #1 in TV123 to generate operational signal #1 of FIG. 4 toincrease the volume of TV 3.

In another scenario, the user presses the PIP key in step 35. Processor15 then determines (step 36) that the programmed codeset TV123 islinked. Processor 15 then uses the substitute flag byte to accesscodeset TV123 in step 37. Because flagbit #6 has a digital value of 0 inthe substitute flag byte, processor 15 determines in step 38 thatkeycode #3 associated with the PIP key in codeset TV123 is no longerpresent (is no longer to be used). In step 40, processor 15 uses thecodeset identifier #2 in keycode link information 27 to access codesetTV345. In step 41, processor 15 uses the keycode key identifier inkeycode link information 27 to obtain the key coordinate of the PIP key.Because the key coordinate matches the pressed PIP key, processor 15then uses the keycode key identifier to determine that keycode #3associated with the PIP key is present in codeset TV345. Finally, instep 39, processor 15 uses keycode #3 in codeset TV345 to generateoperational signal #2 of FIG. 4 to display a picture-in-picture screenon TV 3. Thus, without reprogramming remote control device 2, both VUPkey and PIP key perform their corresponding functions properly whenremote control device 2 is programmed to use codeset TV123.

In the above example, only one keycode associated with the PIP key incodeset TV345 is linked to codeset TV123. Because the picture-in-picturefunction is closely related to the split-screen function, it is verylikely that the keycode associated with the SPLIT key in codeset TV345also works for the same electronic consumer device TV 3.

In one method, the PIP key and the SPLIT key are predefined such thatthey belong to the same cluster of keys. A cluster is a set of keys thatis associated with a given set of functions. If a key in a cluster is intwo different codesets, then there is a high probability that other keysin the cluster will also be present in both codesets. When the PIP keyin codeset TV345 is linked to codeset TV123, the SPLIT key, as a memberof the same cluster of keys, is automatically linked to codeset TV123 aswell. As illustrated in FIG. 4, keycode link information 27 alsoincludes the SPLIT key identifier. When the user presses the SPLIT key,processor 15 follows the steps illustrated in FIG. 6 and uses keycode #4in codeset TV345 to generate an operational signal to display a splitscreen on TV 3.

FIG. 7 illustrates another example of dynamic linking of two codesets inaccordance with one novel aspect. FIG. 7 is a diagram of device indextable 26, codeset index table 22, two codesets 43, 44, keycode linkinformation 27, and two electronic consumer devices 45, 46 that areinvolved in the dynamic linking method.

In the example of FIG. 7, remote control device 2 is programmed withcodeset CABLE301 to control cable set-top box 46. The user uses remotecontrol device 2 to turn on/off the power and to change the channelselected by cable set-top box 46.

However, in order to turn on/off the power of TV 45, the user has toreprogram remote control device 2 to use codeset TV101 by pressing theTV device key. The user follows the steps in FIG. 5 to link the twocodesets CABLE301 and TV101. The user first follows step 30 of FIG. 5 toenter the search mode. In step 31, the user presses the EXIT and thePOWER key together to start automatic searching for keycodes associatedwith the POWER key. When TV 45 is powered on, the user stops the autosearch by pressing the EXIT key (step 32). An identifier of the codesetjust transmitted (for instance, TV101) is saved in a temporary location.In step 33, to link the keycode associated with the POWER key, the userpresses and holds the MENU key, and then presses and releases a keyother than the power key (for instance, a GREEN key on the remotecontrol device that is ordinarily not used). The user finally exits thesearch mode by pressing the TV device key and the EXIT key together(step 34).

In this particular example, because the POWER key is used to control thepower of cable set-top box 46, the user links the keycode of the POWERkey in TV001 with a different physical key to control TV 45. Whenkeycode link routine 20 executes, it stores keycode link information 27in RAM 17 of FIG. 2. In the example of FIG. 7, keycode link information27 includes the programmed codeset identifier

#1 (for instance, CABLE301), the linked codeset identifier

#2 (for instance, TV101), a keycode key identifier (for instance, value6 as illustrated) of the linked POWER key, and a physical key identifier(for instance, value 32 as illustrated) of the GREEN key. Keycode linkinformation 27 also includes a substitute flag byte which remainsunchanged in this example.

Following the steps illustrated in FIG. 6, when the user presses a key(for instance the channel up key) on remote control device 2 that isprogrammed to use codeset CABLE301, processor 15 first determines thatcodeset CABLE301 is linked to another codeset because keycode linkinformation 27 contains the codeset identifier #1, CABLE301. Processor15 then accesses CABLE301 using the substitute flag byte in keycode linkinformation 27. In this example, processor 15 determines that keycode #1associated with the CHUP key is present in CABLE301. In step 39 of FIG.6, processor 15 uses keycode #1 in codeset CABLE301 to generateoperational signal #1 of FIG. 7 to increase the channel number selectedby cable set-top box 46.

When the user later presses the GREEN key, processor 15 also accessesCABLE301 using the substitute flag byte and determines that the keycodefor the GRENN key is not present in codeset CABLE301. Processor 15 thenuses the codeset identifier #2 in keycode link information 27 to accesscodeset TV101. In step 41, processor 15 uses the physical key identifierin keycode link information 27 to determine the key coordinate of theGREEN key. Because the key coordinate matches the pressed GREEN key,processor 15 then uses the keycode key identifier to determine thatkeycode#3 associated with the POWER key is present in codeset TV101.Finally, in step 39, processor 15 uses keycode #3 in codeset TV101 togenerate operational signal #2 of FIG. 7 to turn on/off the power of TV45.

Although certain specific exemplary embodiments are described above inorder to illustrate the invention, the invention is not limited to thespecific embodiments. Accordingly, various modifications, adaptations,and combinations of various features of the described embodiments can bepracticed without departing from the scope of the invention as set forthin the claims.

What is claimed is:
 1. A controlling device adapted to command afunctional operation of a controlled device, comprising: a processingdevice; an input element coupled to the processing device; a transmittercoupled to the processing device; and a memory coupled to the processingdevice; wherein the memory has stored therein a first preset codeset, asecond preset codeset, first information that functions to link thefirst preset codeset with the second preset codeset, second informationthat functions to specify which one of the first preset codeset and thesecond preset codeset is to be accessed to retrieve therefrom a keycodein response to an activation of the input element, and instructionsexecutable by the processing device which, when executed by theprocessing device, cause the controlling device to respond to the inputelement of the controlling device being activated by using the firstinformation and the second information to access one of the first presetcodeset and the second preset codeset, retrieving from the accessed oneof the first preset codeset and the second preset codeset a keycodecorresponding to the activated input element, and using the retrievedkeycode to generate a command for transmission to the controlled devicevia use of the transmitter.
 2. The controlling device as recited inclaim 1, wherein the second information comprises a flagbyte.
 3. Thecontrolling device as recited in claim 1, wherein the first presetcodeset and the second preset codeset are each intended for use incommanding functional operations of a controlled device of a same typeand brand.
 4. The controlling device as recited in claim 1, wherein thefirst preset codeset and the second preset codeset are each intended foruse in commanding functional operations of a controlled device of adifferent type.
 5. The controlling device as recited in claim 1, whereininput received while in a setup mode of operation of the controllingdevice is used to determine the first information and the secondinformation.
 6. The controlling device as recited in claim 1, whereinthe transmitter comprises an infrared transmitter.
 7. The controllingdevice as recited in claim 1, wherein the transmitter comprises a radiofrequency transmitter of the controlling device.
 8. The controllingdevice as recited in claim 1, wherein the second information isautomatically determined by the controlling device.
 9. The controllingdevice as recited in claim 1, wherein the instructions, when executed bythe processing device, further cause the controlling device to implementan auto-scan procedure for use in determining the first information andthe second information.